Terraform Module
Terraformはディレクトリ単位でmoduleになる
実行する際は特定のファイルを指定するのではなく、そのディレクトリの下でλ terraform apply等を実行する
参考
/mrsekut-book-4814400527/261 (4章 モジュールで再利用可能なインフラを作る)
#WIP
Terraformのmodule句はimport
code:tf
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
cluster_name = "webserver-prod"
}
module自体の返り値
output variable (Terraform)を使える
modulesのoutputs.tfとかでoutput variable (Terraform)で宣言して
外部moduleからmodule.<MODULE_NAME>.<OUTPUT_NAME>で参照できる
相対パスの扱いに注意する
/mrsekut-book-4814400527/290 (4.5 モジュールの注意点)
path.module
path.root
path.cwd
moduleぼバージョン管理
/mrsekut-book-4814400527/297 (4.6 モジュールのバージョン管理)
共通のモジュールを使うと、stagingのための変更がprodに影響を及ぼしてしまう
2つのリポジトリに分ける
再利用のためのパーツを集めたリポジトリ
stating/prod等を集めたリポジトリ
各環境ではsourceでgithub urlを指定して別のバージョンを参照する
moduleは小さく保とう
/mrsekut-book-4814400527/585 (8.3 本番レベルのインフラモジュール)
https://developer.hashicorp.com/terraform/language/modules/develop
https://developer.hashicorp.com/terraform/language/modules